/**
 * 交集
 * @param nums1
 * @param nums2
 * @returns
 */
function intersect(nums1: number[], nums2: number[]) {
  return [...new Set([...nums1.filter((item) => nums2.includes(item))])]
}

const nums1 = [1, 2]
const nums2 = [2, 3]
console.log(intersect(nums1, nums2))
// [2]

/**
 * 并集
 * @param nums1
 * @param nums2
 */
function union(nums1: number[], nums2: number[]) {
  return [...new Set([...nums1, ...nums2])]
}
console.log(intersect(nums1, nums2))
// [1, 2, 3]

/**
 * 差集
 * @param nums1
 * @param nums2
 * @returns
 */
function difference(nums1: number[], nums2: number[]) {
  return [...new Set([...nums1.filter((item) => !nums2.includes(item))])]
}
console.log(difference(nums1, nums2))
// [1, 3]
